home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mission 3
/
Mission 3.zip
/
Mission 3.iso
/
spiele
/
clowns
/
monkeys.s
< prev
next >
Wrap
Text File
|
1996-09-18
|
42KB
|
2,506 lines
*****************************************
* Monkeys & Balloons *
* by Frank Cohen *
* (c) 1988 Regent Software *
* ------------------------------------- *
* Started December 9, 1986 *
* Last Modified December 11, 1986 *
* ------------------------------------- *
* Started Again May 16, 1988 *
* Revision List *
* 042388 My 27th Birthday
* 060288 Beta testing release
* 071688 Final release
* 112488 Happy Turkey Day!
* 112588 Fix Mega ST bombing problem
*****************************************
CXORG EQU 20 ;Horizontal starting position
CYORG EQU 154 ;Vert
CKORG EQU 5 ;Gravity start
CIORG EQU $100 ;Y inc value
CIXORG EQU 50 ;X inc value
TEMPO EQU 2 ;Music Tempo
BAL_PER_ROW EQU 6 ;Balloons per row
START DC $A000
MOVE.L D0,HOLDA0
DC $A00A
MOVE #2,-(A7) ;GET PHYSICAL ADDRESS OF VIDEO RAM
TRAP #14
ADD #2,A7
MOVE.L D0,SCREEN
MOVE #4,-(A7) ;GETREZ
TRAP #14
ADD #2,A7
MOVE D0,OLD_REZ
CLR -(A7) ;FORCE LOW REZ
MOVE.L #-1,-(A7)
MOVE.L #-1,-(A7)
MOVE #5,-(A7)
TRAP #14
ADD #10,A7
LEA OLD_COLORS,A4
CLR COUNTER
SAVECLRS CLR -(A7) ;SETCOLOR
MOVE COUNTER,-(A7)
MOVE #7,-(A7)
TRAP #14
ADD #6,A7
MOVE D0,(A4)+
ADD #1,COUNTER
CMP #16,COUNTER
BNE SAVECLRS
MOVE.L #SETUPVB,-(A7) ;RUN INIT V_BLANK
MOVE #38,-(A7)
TRAP #14
ADD #6,A7
*---------------LOAD DATA FROM FILES---------------*
LEA FNAME5,A0
LEA TITLE,A1
JSR LOADFILE
LEA FNAME4,A0
LEA MESSAGES,A1
JSR LOADFILE
LEA FNAME3,A0
LEA MEN,A1
JSR LOADFILE
LEA FNAME2,A0
MOVE.L SCREEN,A1
JSR LOADFILE
LEA FNAME1,A0
LEA BALLOONS,A1
JSR LOADFILE
MOVE #7999,D0
MOVE.L SCREEN,A0
LEA FLIP1,A1
COPYFLIP2 MOVE.L (A0)+,(A1)+
DBF D0,COPYFLIP2
MOVE.L #COLORS,-(A7) ;SET COLOR PALETTE
MOVE #6,-(A7)
TRAP #14
ADD.L #6,A7
ADD #4,A7 ;First time stack modify
* The TAO Programmer says:
* When managers hold endless meetings, the programmers write games.
* When accountants talk of quarterly profits, the development budget
* is about to be cut. When senior scientists talk blue sky,
* the clouds are about to roll in.
* Truly, this is not the Tao of Programming.
*---------------TITLE SCREEN---------------*
DOTITLE SUB #4,A7 ;Even out the stack
MOVE #1,ATTRACT_MODE
JSR RMUSIC
CLR D0
JSR START_MUSIC
LEA TITLE,A0
MOVE.L SCREEN,A1
MOVE.L #7999,D0
DOTIT1 MOVE.L (A0)+,(A1)+
DBF D0,DOTIT1
MOVE #10,COUNT2
TITLE_99 MOVE #60,COUNT
TITLE_100 MOVE VCOUNT,D0
TITLE_SYNC CMP VCOUNT,D0
BEQ TITLE_SYNC
JSR MUSIC
MOVE.L HOLDA0,A0
MOVE -596(A0),D0
AND #3,D0
BNE START_GAME
SUB #1,COUNT
TST COUNT
BNE TITLE_100
MOVE #60,COUNT
SUB #1,COUNT2
TST COUNT2
BNE TITLE_99
CLR.L POINTS
CLR.L BONUS
JMP PLAYINIT
START_GAME MOVE.L HOLDA0,A0
MOVE -596(A0),D0
AND #3,D0
BNE START_GAME
JSR RMUSIC
CLR ATTRACT_MODE
CLR.L POINTS
CLR.L BONUS
MOVE #3,LIVES
*---------------INIT----------------*
PLAYINIT MOVE #20,MEN_TIMER
CLR PCOUNT
CLR PCOUNT2
CLR CLOWNIMAGE
MOVE #70,IMAGETIME
MOVE #10,MENXPOS
MOVE #10,OLDMEN
MOVE #CIORG,YINC
MOVE #CIORG,SYINC
MOVE #CIXORG,XINC
MOVE #CKORG,KS
MOVE #CKORG,KAY
CLR HITS
MOVE #CXORG,CLOWNX
MOVE #CXORG,OLDCLOWNX
MOVE.B #CXORG,HPOS
MOVE #CYORG,CLOWNY
MOVE #CYORG,OLDCLOWNY
MOVE.B #CYORG,VPOS
MOVE #7999,D0
LEA FLIP1,A0
MOVE.L SCREEN,A1
COPYFLIP MOVE.L (A0)+,(A1)+
DBF D0,COPYFLIP
JSR START_BALLOONS
CLR D0
JSR SCORED
* When managers make commitments, game programs are ignored.
* When accountants make long-range plans, harmony and order are
* about to be restored. When senior scientists address the
* problems at hand, then the problems will soon be solved.
* Truly, this is the Tao of Programming.
*--------------MAIN LOOP---------------
MAINLOOP TST ATTRACT_MODE
BEQ MAINNB
MOVE.L HOLDA0,A0
MOVE -596(A0),D0
AND #3,D0
BNE START_GAME
MAINNB MOVE #11,-(A7)
TRAP #1
ADD #2,A7
TST D0
BEQ NOKEY
JSR WAIT_KEY
MOVE.L D0,D1
SWAP D1
CMP.B #97,D1
BEQ EXIT
CMP.B #' ',D0
BEQ EXIT
CMP.B #27,D0
BNE NOKEY
PAUSED TST ATTRACT_MODE
BNE NOKEY
JSR WAIT_KEY
CMP.B #27,D0
BNE PAUSED
NOKEY MOVE VCOUNT,D0
MAIN2 ADD #1,RNDVAL
CMP VCOUNT,D0
BEQ MAIN2
JSR UN_PLOT_CLOWN
JSR PLOT_BALLOONS
CMP #100,CLOWNY
BGT SYNC_LOWER
JSR PLOT_CLOWN
JSR PLOT_MEN
JSR MOVE_CLOWN
JSR MOVE_MEN
JSR POP_BALLOONS
JSR MUSIC
JSR SOUNDS
JMP MAINLOOP
SYNC_LOWER JSR PLOT_MEN
JSR PLOT_CLOWN
JSR MOVE_CLOWN
JSR MOVE_MEN
JSR POP_BALLOONS
JSR MUSIC
JSR SOUNDS
JMP MAINLOOP
*-------MOVE MONKEYS--------
MOVE_MEN TST ATTRACT_MODE
BEQ MM_NORMAL
MOVE VCOUNT,D0
AND #3,D0
MOVE D0,MEN_TIMER
MOVE CLOWNX,D0
LSR #1,D0
SUB #5,D0
CMP MENXPOS,D0
BEQ MM_RTN
BCS MM_LT
MOVE MENXPOS,D0
CMP #58,D0
BGE MM_RTN
ADD #1,MENXPOS
RTS
MM_LT MOVE MENXPOS,D0
CMP #8,D0
BLE MM_RTN
SUB #1,MENXPOS
RTS
MM_NORMAL MOVE.L HOLDA0,A0
MOVE -602(A0),D0
LSR #2,D0
CMP #7,D0
BLE MM_RTN2
CMP #60,D0
BGE MM_RTN4
MM_RTN3 MOVE D0,MENXPOS
MM_RTN RTS
MM_RTN2 MOVE #8,D0
JMP MM_RTN3
MM_RTN4 MOVE #59,D0
JMP MM_RTN3
*--------INIT V_BLANK ROUTINES-----------
SETUPVB MOVE.L $456,A0
RUNRUN TST.L (A0)
BEQ SET2
ADD #4,A0
JMP RUNRUN
SET2 MOVE.L #V_BLANK,(A0)
MOVE.L A0,HOLDEN
RTS
*--------DE INIT--------
DEINIT MOVE.L #UNBY,-(A7) ;RUN INIT V_BLANK
MOVE #38,-(A7)
TRAP #14
ADD #6,A7
RTS
UNBY MOVE.L HOLDEN,A0 ;CLEAR VBLANK PATCH
CLR.L (A0)
RTS
*--------VERTICAL BLANK ROUTINE----------
V_BLANK ADD #1,VCOUNT
RTS
* There was once a master programmer who wrote unstructured
* programs. A novice programmer, seeking to imitate him, also
* began to write unstructured code. When the novice asked the
* master to evaluate his progress, the master criticized him
* for writing unstructured programs, saying: "What is appropriate
* for the master is not appropriate for the novice. You must
* understand Tao before transcending structure."
*----------BALLOON PLOT-----------
PLOT_BALLOONS ADD #1,PCOUNT2
CMP #3,PCOUNT2
BLT PLOT_MAIN
CLR PCOUNT2
PLOT_MAIN CLR PCOUNT
TST PCOUNT2
BEQ PLOT_LOOP
MOVE #BAL_PER_ROW,PCOUNT
CMP #1,PCOUNT2
BEQ PLOT_LOOP
MOVE #BAL_PER_ROW*2,PCOUNT
PLOT_LOOP CLR.L D7
MOVE PCOUNT,D7
LSL #1,D7
LEA SWITCH,A0
ADD D7,A0
TST (A0)
BEQ PLOT_RCRS
LEA DELAY,A0
ADD D7,A0
TST (A0)
BEQ PLOT_NODELAY
SUB #1,(A0)
JMP PLOT_RCRS
PLOT_NODELAY LEA XPOS,A0
ADD D7,A0
CMP #2,PCOUNT2
BNE PLOT_RIGHT
SUB #1,(A0)
TST (A0)
BNE PLOT_NST
MOVE #145,(A0)
JMP PLOT_NST
PLOT_RIGHT ADD #1,(A0)
CMP #145,(A0)
BLT PLOT_NST
CLR (A0)
PLOT_NST CLR.L D6
CLR.L D5
MOVE (A0),D5
MOVE D5,D6
AND #$0007,D6 ;IMAGE #
AND #$FFF8,D5
CLR.L D1
MOVE D6,D1
MOVE.L #160*14,D0
CMP #4,D6
BLT PAPPAS
SUB #4,D1
MOVE #160*48,D0
PAPPAS ADD.L #BALLOONS,D0
LSL #5,D1
ADD.L D1,D0
MOVE.L D0,A0
MOVE.L SCREEN,D1
ADD.L #44*160,D1
TST PCOUNT2
BEQ DOUG3
ADD.L #60*160,D1
CMP #1,PCOUNT2
BEQ DOUG3
SUB.L #30*160,D1
DOUG3 ADD.L D5,D1
MOVE.L D1,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
*-------RECURSE-------
PLOT_RCRS ADD #1,PCOUNT
TST PCOUNT2
BEQ PLOT_T2
CMP #1,PCOUNT2
BEQ PLOT_T1
CMP #BAL_PER_ROW*3,PCOUNT
BNE PLOT_LOOP
LEA FLIP1+11840,A0
MOVE.L SCREEN,A1
ADD #11840,A1
JSR DODOUG
LEA FLIP1+11984,A0
MOVE.L SCREEN,A1
ADD #11984,A1
JMP DODOUG
PLOT_T1 CMP #BAL_PER_ROW*2,PCOUNT
BNE PLOT_LOOP
LEA FLIP1+16640,A0
MOVE.L SCREEN,A1
ADD #16640,A1
JSR DODOUG
LEA FLIP1+16784,A0
MOVE.L SCREEN,A1
ADD #16784,A1
JMP DODOUG
PLOT_T2 CMP #BAL_PER_ROW,PCOUNT
BNE PLOT_LOOP
LEA FLIP1+7040,A0
MOVE.L SCREEN,A1
ADD #7040,A1
JSR DODOUG
LEA FLIP1+7184,A0
MOVE.L SCREEN,A1
ADD #7184,A1
DODOUG MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
RTS
*-----------PLOT RUNNING MEN---------
PLOT_MEN CLR.L D0
MOVE OLDMEN,D0
AND #$FFFC,D0
LSL #1,D0
MOVE.L SCREEN,A1
ADD #160*173,A1
ADD D0,A1
MOVE #3,D1
CLRMEN CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-32,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-32,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-32,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-32,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-32,A1
DBF D1,CLRMEN
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
* A novice asked the master: "Here is a programmer who never
* designs, documents, or tests his programs. Yet all who know
* him consider him one of the best programmers in the world.
* Why is this?"
* The master replied: "That programmer has mastered the Tao.
* He has gone beyond the need for design; he does not become
* angry when the system crashes, but accepts the universe without
* concern. He has gone beyond the need for documentation; he no longer
* cares if anyone sees his code. He has gone beyond the need for
* testing; each of his programs are perfect within themselves,
* serene and elegant, their purpose self-evident.
* "Truly, he has entered te mystery of the Tao."
CLR.L D1
MOVE MENXPOS,D1
MOVE D1,OLDMEN
AND #$0003,D1
LSL #5,D1
LEA MEN,A0
ADD #160*11,A0
ADD D1,A0
CLR.L D0
MOVE MENXPOS,D0
AND #$FFFC,D0
LSL #1,D0
MOVE.L SCREEN,A1
ADD #160*173,A1
ADD D0,A1
MOVE #3,D1
MENPOS MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-32,A0
ADD #160-32,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-32,A0
ADD #160-32,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-32,A0
ADD #160-32,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-32,A0
ADD #160-32,A1
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-32,A0
ADD #160-32,A1
DBF D1,MENPOS
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
RTS
*-----------PLOT CLOWN---------
UN_PLOT_CLOWN CLR.L D1
MOVE OLDCLOWNX,D1
AND #$0007,D1
LSL #4,D1
LEA MEN,A0
ADD #160*43,A0
ADD.L D1,A0
CLR.L D1
MOVE OLDIMAGE,D1
MULU #41*160,D1
ADD.L D1,A0
CLR.L D1
MOVE OLDCLOWNY,D1
MULU #160,D1
CLR.L D0
MOVE OLDCLOWNX,D0
AND #$FFF8,D0
ADD.L SCREEN,D0
ADD.L D1,D0
MOVE.L D0,A1
MOVE #29,D3
CLRCLOWN MOVE.L (A0)+,D0
EOR.L #$FFFFFFFF,D0
MOVE.L (A1),D1
AND.L D1,D0
MOVE.L D0,(A1)+
MOVE.L (A0)+,D0
EOR.L #$FFFFFFFF,D0
MOVE.L (A1),D1
AND.L D1,D0
MOVE.L D0,(A1)+
MOVE.L (A0)+,D0
EOR.L #$FFFFFFFF,D0
MOVE.L (A1),D1
AND.L D1,D0
MOVE.L D0,(A1)+
MOVE.L (A0)+,D0
EOR.L #$FFFFFFFF,D0
MOVE.L (A1),D1
AND.L D1,D0
MOVE.L D0,(A1)+
ADD #160-16,A0
ADD #160-16,A1
DBF D3,CLRCLOWN
RTS
PLOT_CLOWN SUB #1,IMAGETIME
TST IMAGETIME
BPL NOIMAGE
MOVE RNDVAL,D0
AND #$3F,D0
MOVE D0,IMAGETIME
AND #3,D0
MOVE D0,CLOWNIMAGE
NOIMAGE MOVE CLOWNX,OLDCLOWNX
MOVE CLOWNY,OLDCLOWNY
MOVE CLOWNIMAGE,OLDIMAGE
CLR.L D1
MOVE CLOWNX,D1
AND #$0007,D1
LSL #4,D1
LEA MEN,A0
ADD #160*43,A0
ADD D1,A0
CLR.L D1
MOVE CLOWNIMAGE,D1
MULU #41*160,D1
ADD.L D1,A0
CLR.L D1
MOVE CLOWNY,D1
MULU #160,D1
CLR.L D0
MOVE CLOWNX,D0
AND #$FFF8,D0
ADD.L SCREEN,D0
ADD.L D1,D0
MOVE.L D0,A1
MOVE #29,D3
CLOWNPOS MOVE.L (A0)+,D0
MOVE.L D0,D2
EOR.L #$FFFFFFFF,D0
MOVE.L (A1),D1
AND.L D1,D0
OR.L D2,D0
MOVE.L D0,(A1)+
MOVE.L (A0)+,D0
MOVE.L D0,D2
EOR.L #$FFFFFFFF,D0
MOVE.L (A1),D1
AND.L D1,D0
OR.L D2,D0
MOVE.L D0,(A1)+
MOVE.L (A0)+,D0
MOVE.L D0,D2
EOR.L #$FFFFFFFF,D0
MOVE.L (A1),D1
AND.L D1,D0
OR.L D2,D0
MOVE.L D0,(A1)+
MOVE.L (A0)+,D0
MOVE.L D0,D2
EOR.L #$FFFFFFFF,D0
MOVE.L (A1),D1
AND.L D1,D0
OR.L D2,D0
MOVE.L D0,(A1)+
ADD #160-16,A0
ADD #160-16,A1
DBF D3,CLOWNPOS
RTS
*------------CLOWN MOVEMENT------------
MOVE_CLOWN MOVE YINC,D0
SUB KAY,D0
MOVE D0,YINC
CLR.L D2
MOVE D0,D2
CLR.L D1
MOVE VPOS,D1
SUB D2,D1
MOVE D1,VPOS
CLR D1
MOVE.B VPOS,D1
CMP #45,D1
BGT NO_TOP
MOVE #1,TOP_FLAG
NO_TOP CLR.L D0
MOVE HPOS,D0
ADD XINC,D0
MOVE D0,HPOS
CMP.B #16,HPOS ;Hit left wall
BCC NSS
ADD.B #1,HPOS
CLR D0
SUB XINC,D0
MOVE D0,XINC
MOVE #3,IMAGETIME
JSR HIT_WALL
NSS CMP.B #136,HPOS
BCS NSSL
SUB.B #1,HPOS ;Hit right wall
CLR D0
SUB XINC,D0
MOVE D0,XINC
MOVE #3,IMAGETIME
JSR HIT_WALL
NSSL CMP.B #155,VPOS ;Bounce on trampoline
BCS MVMAN
ADD #1,HITS
TST TOP_FLAG
BEQ NOTOPED
CLR TOP_FLAG
CMP #90,KS
BGT SKILL2
ADD #1,KS
ADD #16,SYINC
JMP REPLAY
SKILL2 SUB #35,SYINC
JMP REPLAY
NOTOPED ADD #30,SYINC
REPLAY MOVE SYINC,YINC
MOVE KS,KAY
SUB #1,VPOS
TST ATTRACT_MODE
BNE NOTRAMPSND
TST MUSTAT
BNE NOTRAMPSND
JSR RMUSIC
MOVE #10,SOUND_COUNT
MOVE #236,D0
MOVE #0,D1
JSR DOSOUND
MOVE #5,D0
MOVE #1,D1
JSR DOSOUND
MOVE #230,D0
MOVE #2,D1
JSR DOSOUND
MOVE #5,D0
MOVE #3,D1
JSR DOSOUND
MOVE #252,D0 ;Turn on all tone voices
MOVE #7,D1
JSR DOSOUND
MOVE #10,D0 ;Set volumes
MOVE #8,D1
JSR DOSOUND
MOVE #10,D0
MOVE #9,D1
JSR DOSOUND
MOVE #10,D0
MOVE #10,D1
JSR DOSOUND
NOTRAMPSND CLR.L D1
MOVE MENXPOS,D1
LSL #1,D1
CLR.L D0
MOVE.B HPOS,D0
CMP D1,D0
BLT DEAD
SUB D1,D0
CMP #17,D0
BGE DEAD
TST ATTRACT_MODE
BEQ MV_NATT
MOVE #-175,XINC
MOVE RNDVAL,D0
AND #1,D0
BEQ MVMAN
MOVE #175,XINC
JMP MVMAN
MV_NATT CLR.L D1
MOVE D0,D1
LSL #1,D1
ADD.L #XTABLE,D1
MOVE.L D1,A0
MOVE (A0),XINC
MVMAN CLR D0
MOVE.B VPOS,D0
MOVE D0,CLOWNY
CLR D0
MOVE.B HPOS,D0
MOVE D0,CLOWNX
RTS
*----------DEATH ROUTINE-----------*
DEAD LEA FLIP1,A0
ADD #153*160,A0
MOVE.L SCREEN,A1
ADD #153*160,A1
MOVE.L #160*42,D0
DEAD2 MOVE.B (A0)+,(A1)+
DBF D0,DEAD2
MOVE.L SCREEN,A1
ADD #160*166,A1
CLR.L D0
MOVE CLOWNX,D0
AND #$FFF8,D0
ADD.L D0,A1
LEA MEN,A0
ADD #160*43,A0
ADD #128,A0
MOVE #28,D0
DEAD3 MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
ADD #160-16,A0
ADD #160-16,A1
DBF D0,DEAD3
JSR RMUSIC
MOVE #2,D0
JSR START_MUSIC
TST LIVES
BNE DEAD4
MOVE #4,D0
JSR DOMESSAGE
DEAD4 MOVE VCOUNT,D0
DEAD5 ADD #1,RNDVAL
CMP VCOUNT,D0
BEQ DEAD5
JSR MUSIC
JSR PLOT_BALLOONS
TST MUSTAT
BNE DEAD4
TST LIVES
BEQ GAME_OVER
SUB #1,LIVES
JMP PLAYINIT
GAME_OVER JMP DOTITLE
XTABLE DC -350,-300,-250,-225,-200,-175,-150,-50
DC 50,150,175,200,225,250,300,350
DC 350,350,350,350,350,350,350,350
*-----------LOAD A FILE-------------
* A0 = PTR TO FILE NAME
* A1 = PTR TO LOCATION
LOADFILE MOVE.L A1,LFADR
CLR -(A7) ;F_OPEN
MOVE.L A0,-(A7)
MOVE #$3D,-(A7)
TRAP #1
ADD #8,A7
TST D0
BMI EXIT
MOVE D0,FHANDLE
MOVE.L #COLORS-2,-(A7) ;F_READ
MOVE.L #34,-(A7)
MOVE FHANDLE,-(A7)
MOVE #$3F,-(A7)
TRAP #1
ADD #12,A7
MOVE.L #DECODE,-(A7) ;F_READ
MOVE.L #32000,-(A7)
MOVE FHANDLE,-(A7)
MOVE #$3F,-(A7)
TRAP #1
ADD #12,A7
MOVE.L D0,LFSIZE
MOVE FHANDLE,-(A7) ;F_CLOSE
MOVE #$3E,-(A7)
TRAP #1
ADD #4,A7
MOVE.L LFSIZE,D0
MOVE.L LFADR,A0
MOVE.L #DECODE,A1
*****************************************************
* DEGAS COMPRESSED PICTURE DECODER (LOW RESOLUTION) *
* D0 - # OF BYTES TO DECOMPRESS *
* A0 - DESTINATION ADDRESS *
* A1 - SOURCE ADDRESS *
*****************************************************
CLR D3
MOVE #200,D6
DEGAS_LINE MOVE #4,D5
SUB #1,D6
TST D6
BEQ DEGAS_DONE
DEGAS_COLOR MOVE #40,D4
DEGAS_LOOP CMP.L #1,D0
BLT DEGAS_DONE
SUB.L #1,D0
CLR.L D1
MOVE.B (A1)+,D1
CMP.B #128,D1
BEQ DEGAS_LOOP
TST.B D1
BMI DEGAS_DUPLICATE
DEGAS_COPYLP MOVE.B (A1)+,(A0)
SUB.L #1,D0
SUB #1,D4
TST D3
BNE DEGAS_COPYLP2
ADD #1,A0
MOVE #1,D3
JMP DEGAS_COPYRCRS
DEGAS_COPYLP2 ADD #7,A0
CLR D3
DEGAS_COPYRCRS DBF D1,DEGAS_COPYLP
TST D4
BNE DEGAS_LOOP
SUB #158,A0
SUB #1,D5
TST D5
BNE DEGAS_COLOR
ADD #152,A0
JMP DEGAS_LINE
* "After three days without programming, life becomes meaningless."
DEGAS_DUPLICATE MULS #-1,D1
AND #$FF,D1
MOVE.B (A1)+,D2
SUB.L #1,D0
DEGAS_DUPLP MOVE.B D2,(A0)
SUB #1,D4
TST D3
BNE DEGAS_DUPLP2
ADD #1,A0
MOVE #1,D3
JMP DEGAS_DUPRCRS
DEGAS_DUPLP2 ADD #7,A0
CLR D3
DEGAS_DUPRCRS DBF D1,DEGAS_DUPLP
TST D4
BNE DEGAS_LOOP
SUB #158,A0
SUB #1,D5
TST D5
BNE DEGAS_COLOR
ADD #152,A0
JMP DEGAS_LINE
DEGAS_DONE RTS
*-------------EXIT-------------
EXIT JSR DEINIT
MOVE OLD_REZ,-(A7) ;FORCE LOW REZ
MOVE.L #-1,-(A7)
MOVE.L #-1,-(A7)
MOVE #5,-(A7)
TRAP #14
ADD #10,A7
MOVE.L #OLD_COLORS,-(A7) ;SET COLOR PALETTE
MOVE #6,-(A7)
TRAP #14
ADD.L #6,A7
DC $A009
CLR -(A7)
TRAP #1
FNAME1 DC.B 'CLOWNS.PC1',0
FNAME2 DC.B 'BACKGRND.PC1',0
FNAME3 DC.B 'MEN.PC1',0
FNAME4 DC.B 'MESSAGES.PC1',0
FNAME5 DC.B 'TITLE.PC1',0
EVEN
WAIT_KEY MOVE #7,-(A7)
TRAP #1
ADD.L #2,A7
RTS
*---------------BALLOON COLLISSION DETECT--------------*
POP_BALLOONS LEA SWITCH,A2
LEA XPOS,A3
MOVE.L #BAL_PER_ROW-1,D5
CLR.L D6
CMP #44,CLOWNY
BLT POP_L2
CMP #70,CLOWNY
BLE POP_TEST
POP_L2 ADD #BAL_PER_ROW*2,A2
ADD #BAL_PER_ROW*2,A3
MOVE #1,D6
CMP #104,CLOWNY
BLT POP_L3
CMP #130,CLOWNY
BLE POP_TEST
POP_L3 ADD #BAL_PER_ROW*2,A2
ADD #BAL_PER_ROW*2,A3
MOVE #2,D6
CMP #74,CLOWNY
BLT POP_DONE
CMP #100,CLOWNY
BGT POP_DONE
POP_TEST TST (A2)
BEQ POP_RCRS
CMP #16,(A3)
BLT POP_RCRS
CMP #135,(A3)
BGT POP_RCRS
MOVE CLOWNX,D0
CMP (A3),D0
BLT POP_RCRS
SUB #10,D0
CMP (A3),D0
BGT POP_RCRS
CLR.L D0 ;Clear one popped balloon
MOVE (A3),D0
AND #$FFF8,D0
MOVE.L SCREEN,D1
ADD.L #44*160,D1
TST D6
BEQ POP_CLRIT
ADD.L #60*160,D1
CMP #1,D6
BEQ POP_CLRIT
SUB.L #30*160,D1
POP_CLRIT ADD.L D1,D0
MOVE.L D0,A1
JSR POP_IT
JSR POP_SOUND
CLR (A2)
CLR (A3)
TST D6
BNE POP_2NDLVL
MOVE #25,D0
JSR SCORED
SUB #1,POP_COUNT1
TST POP_COUNT1
BNE POP_RCRS
TST POP_COUNT2
BEQ POP_ENDL1
LEA FLIP1,A0 ;Refill the first row of balloons
ADD #7040,A0
MOVE.L SCREEN,A1
ADD #7040,A1
MOVE #1039,D0
POP_FILL1 MOVE.L (A0)+,(A1)+
DBF D0,POP_FILL1
MOVE #BAL_PER_ROW,POP_COUNT1
LEA XPOS,A0
LEA DELAY,A1
LEA SWITCH,A2
MOVE #BAL_PER_ROW-1,D0
MOVE #18,D1
POP_INT1 CLR (A0)+
MOVE D1,(A1)+
MOVE #1,(A2)+
ADD #22,D1
DBF D0,POP_INT1
JMP POP_RCRS
POP_ENDL1 TST ATTRACT_MODE
BNE DOTITLE
MOVE #2,D0 ;Bonus of 1000 Points!
JSR DOMESSAGE
MOVE #1000,D0
JSR SCORED
JSR RMUSIC
MOVE.L #1,D0
JSR START_MUSIC
JSR START_BALLOONS
JSR UN_PLOT_CLOWN
MAIN4 MOVE VCOUNT,D0
MAIN3 ADD #1,RNDVAL
CMP VCOUNT,D0
BEQ MAIN3
JSR UN_PLOT_CLOWN
JSR PLOT_MEN
JSR PLOT_CLOWN
JSR MOVE_MEN
JSR MUSIC
TST MUSTAT
BNE MAIN4
MOVE #5,D0
JSR DOMESSAGE
JMP POP_DONE
POP_2NDLVL CMP #1,D6
BEQ POP_3RDLVL
MOVE #15,D0
JSR SCORED
SUB #1,POP_COUNT2
TST POP_COUNT2
BNE POP_RCRS
TST POP_COUNT3
BEQ POP_ENDL2
LEA FLIP1,A0 ;Refill the second row of balloons
ADD #11840,A0
MOVE.L SCREEN,A1
ADD #11840,A1
MOVE #1039,D0
POP_FL3 MOVE.L (A0)+,(A1)+
DBF D0,POP_FL3
MOVE #BAL_PER_ROW,POP_COUNT2
LEA XPOS,A0
ADD #BAL_PER_ROW*4,A0
LEA DELAY,A1
ADD #BAL_PER_ROW*4,A1
LEA SWITCH,A2
ADD #BAL_PER_ROW*4,A2
MOVE #BAL_PER_ROW-1,D0
MOVE #45,D1
POP_INT2 MOVE #144,(A0)+
MOVE D1,(A1)+
MOVE #1,(A2)+
ADD #24,D1
DBF D0,POP_INT2
JMP POP_RCRS
POP_ENDL2 TST ATTRACT_MODE
BNE POP_DONE
MOVE #1,D0 ;Bonus of 500 Points
JSR DOMESSAGE
MOVE #500,D0
JSR SCORED
JSR RMUSIC
MOVE.L #4,D0
JSR START_MUSIC
JMP MAIN4
POP_3RDLVL MOVE #10,D0
JSR SCORED
SUB #1,POP_COUNT3
TST POP_COUNT3
BNE POP_RCRS
TST ATTRACT_MODE
BNE POP_DONE
CLR D0 ;Bonus of 100 Points
JSR DOMESSAGE
MOVE #100,D0
JSR SCORED
JSR RMUSIC
MOVE.L #3,D0
JSR START_MUSIC
JMP MAIN4
POP_RCRS ADD #2,A2
ADD #2,A3
DBF D5,POP_TEST
POP_DONE RTS
POP_IT CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
ADD #160-16,A1
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
CLR.L (A1)+
RTS
*--------------Initialize all the balloons-----------------*
START_BALLOONS CLR TIMER
MOVE #BAL_PER_ROW,D0
MOVE D0,POP_COUNT1
MOVE D0,POP_COUNT2
MOVE D0,POP_COUNT3
LEA SWITCH,A0
MOVE #BAL_PER_ROW*3,D0
SUB #1,D0
INIT0 MOVE #1,(A0)+
DBF D0,INIT0
LEA XPOS,A0
LEA DELAY,A1
MOVE #BAL_PER_ROW-1,D0
MOVE #18,D1
INIT1 CLR (A0)+
MOVE D1,(A1)+
ADD #22,D1
DBF D0,INIT1
MOVE #BAL_PER_ROW-1,D0
MOVE #30,D1
INIT2 CLR (A0)+
MOVE D1,(A1)+
ADD #26,D1
DBF D0,INIT2
MOVE #BAL_PER_ROW-1,D0
MOVE #45,D1
INIT3 MOVE #144,(A0)+
MOVE D1,(A1)+
ADD #24,D1
DBF D0,INIT3
RTS
*-------------Print a message-------------*
DOMESSAGE AND.L #$FF,D0
MULU #160*16,D0
ADD.L #MESSAGES+16,D0
MOVE.L D0,A0
MOVE.L SCREEN,A1
ADD #135*160,A1
ADD #16,A1
MOVE.L #16,D0
DOM_100 MOVE #31,D1
DOM_101 MOVE.L (A0)+,(A1)+
DBF D1,DOM_101
ADD #160-128,A0
ADD #160-128,A1
DBF D0,DOM_100
RTS
*---------------Scoring--------------*
SCORED AND.L #$FFFF,D0
MOVE.L D0,D1
ADD.L POINTS,D0
MOVE.L D0,POINTS
ADD.L BONUS,D1
MOVE.L D1,BONUS
CMP.L #10000,D1
BGT BUTUSCREWT
LEA MESSAGES,A0
MOVE.L SCREEN,A4
ADD #160*28,A4
AND.L #$FFFF,D0
DIVU #10000,D0
MOVE.L D0,D1
AND.L #15,D0
MULU #1280,D0
ADD.L #MESSAGES,D0
MOVE.L D0,A0
MOVE.L A4,A1
JSR SCOR_IT
SWAP D1
AND.L #$FFFF,D1
DIVU #1000,D1
MOVE.L D1,D0
AND.L #15,D1
MULU #1280,D1
ADD.L #MESSAGES,D1
MOVE.L D1,A0
MOVE.L A4,A1
ADD #1,A1
JSR SCOR_IT
SWAP D0
AND.L #$FFFF,D0
DIVU #100,D0
MOVE.L D0,D1
AND.L #15,D0
MULU #1280,D0
ADD.L #MESSAGES,D0
MOVE.L D0,A0
MOVE.L A4,A1
ADD #8,A1
JSR SCOR_IT
SWAP D1
AND.L #$FFFF,D1
DIVU #10,D1
MOVE.L D1,D0
AND.L #15,D1
MULU #1280,D1
ADD.L #MESSAGES,D1
MOVE.L D1,A0
MOVE.L A4,A1
ADD #9,A1
JSR SCOR_IT
SWAP D0
AND.L #15,D0
MULU #1280,D0
ADD.L #MESSAGES,D0
MOVE.L D0,A0
MOVE.L A4,A1
ADD #16,A1
JSR SCOR_IT
MOVE.L SCREEN,A4
ADD #160*28,A4
ADD #144,A4
MOVE LIVES,D1
BEQ SCOREND
LEA MESSAGES+12800,A0
MOVE.L A4,A1
JSR SCOR_IT
CMP #1,D1
BEQ SCOREND
LEA MESSAGES+12800,A0
MOVE.L A4,A1
ADD #1,A1
JSR SCOR_IT
CMP #2,D1
BEQ SCOREND
LEA MESSAGES+12800,A0
MOVE.L A4,A1
ADD #8,A1
JSR SCOR_IT
CMP #3,D1
BEQ SCOREND
LEA MESSAGES+12800,A0
MOVE.L A4,A1
ADD #9,A1
SCOR_IT MOVE #7,D2
SCOR_100 MOVE.B (A0),(A1)
MOVE.B 2(A0),2(A1)
MOVE.B 4(A0),4(A1)
MOVE.B 6(A0),6(A1)
ADD #160,A0
ADD #160,A1
DBF D2,SCOR_100
SCOREND RTS
BUTUSCREWT CLR.L BONUS
JSR RMUSIC
MOVE #5,D0
JSR START_MUSIC
MOVE #3,D0
JSR DOMESSAGE
ADD #1,LIVES
CLR D0
JSR SCORED
BUTUS1 MOVE VCOUNT,D0
BUTUS2 ADD #1,RNDVAL
CMP VCOUNT,D0
BEQ BUTUS2
JSR UN_PLOT_CLOWN
JSR PLOT_MEN
JSR PLOT_CLOWN
JSR MOVE_MEN
JSR MUSIC
TST MUSTAT
BNE BUTUS1
MOVE #5,D0
JMP DOMESSAGE
**********************
* MONKEYS & BALLOONS *
* MUSIC GENERATOR *
* 68000 *
* 6/14/88 *
**********************
RMUSIC CLR D0 ;RESET MUSIC GENERATOR
MOVE #8,D1
JSR DOSOUND
CLR D0
MOVE #9,D1
JSR DOSOUND
CLR D0
MOVE #10,D1
JSR DOSOUND
MOVE #$0100,D0
MOVE D0,MSDLY1
MOVE D0,MSDLY2
MOVE D0,MSDLY3
CLR VOICE1
CLR VOICE2
CLR VOICE3
CLR MUSTAT
MOVE #TEMPO,MUSDLY
RTS
*----------Start playing music---------*
START_MUSIC MULU #12,D0
ADD.L #MUSTBL,D0
MOVE.L D0,A0
MOVE.L (A0)+,MSPTR1
MOVE.L (A0)+,MSPTR2
MOVE.L (A0)+,MSPTR3
MOVE #248,D0 ;Turn on all tone voices
MOVE #7,D1
JSR DOSOUND
MOVE #10,D0 ;Set volumes
MOVE #8,D1
JSR DOSOUND
MOVE #10,D0
MOVE #9,D1
JSR DOSOUND
MOVE #10,D0
MOVE #10,D1
JSR DOSOUND
MOVE #1,MUSTAT
RTS
MUSTBL DC.L MUS1V1,MUS1V2,MUS1V4
DC.L MUS2V1,MUS2V2,MUS2V4
DC.L MUS3V1,MUS3V2,MUS3V4
DC.L MUS4V1,MUS4V2,MUS4V3
DC.L MUS5V1,MUS5V2,MUS5V4
DC.L MUS6V1,MUS6V2,MUS6V4
*----------Play some music---------*
MUSIC TST MUSTAT ;MUSIC BEING PLAYED
BEQ NOMUSIC
SUB #1,MUSDLY ;DELAY FINISHED
TST MUSDLY
BNE NOMUSIC
MOVE #TEMPO,MUSDLY
LEA MSDLY1,A4
LEA VOICE1,A3
LEA MSPTR1,A2
CLR D4
MUS1 CLR.L D0
MOVE.B (A4),D0
SUB #1,D0
TST D0
BEQ MUS1B
MOVE.B D0,(A4)
JMP MUS2
MUS1B CLR (A3) ;VOICE1
CLR D0
MOVE D4,D1
JSR DOSOUND
CLR D0
MOVE D4,D1
ADD #1,D1
JSR DOSOUND
MOVE.B 1(A4),D0
BEQ MUS1C
SUB #1,D0
MOVE.B D0,1(A4)
JMP MUS2
MUS1C MOVE.L (A2),A0
CMP #MEOF,(A0)
BNE MFM1
JSR RMUSIC
JMP NOMUSIC
MFM1 MOVE (A0),D0
MOVE D0,(A3) ;VOICE1
AND #$FF,D0
MOVE D4,D1
JSR DOSOUND
MOVE.B (A3),D0
MOVE D4,D1
ADD #1,D1
JSR DOSOUND
CLR.L D0
MOVE 2(A0),D0
MOVE.B D0,1(A4) ;MSDLY1+1
LSL #2,D0
MOVE.B D0,(A4) ;MSDLY1
ADD.L #4,(A2)
MUS2 ADD #4,A2
ADD #2,A3
ADD #2,A4
ADD #2,D4
CMP #6,D4
BNE MUS1
RTS
DOSOUND MOVEM.L D0-D4/A0-A4,-(A7)
OR #$80,D1
MOVE D1,-(A7) ;Reg #
MOVE D0,-(A7) ;Data
MOVE #28,-(A7)
TRAP #14
ADD #6,A7
MOVEM.L (A7)+,D0-D4/A0-A4
NOMUSIC RTS
MC1 = 955
MDF1 = 901
MD1 = 851
MEF1 = 302
ME1 = 758
MF1 = 715
MGF1 = 675
MG1 = 637
MAF1 = 601
MA1 = 568
MBF1 = 536
MB1 = 506
MC2 = 477
MDF2 = 450
MD2 = 425
MEF2 = 401
ME2 = 379
MF2 = 357
MGF2 = 337
MG2 = 318
MAF2 = 300
MA2 = 284
MBF2 = 268
MB2 = 253
MC3 = 238
MDF3 = 225
MD3 = 212
MEF3 = 200
ME3 = 189
MF3 = 178
MGF3 = 168
MG3 = 159
MAF3 = 150
MA3 = 142
MBF3 = 134
MB3 = 126
MC4 = 119
MEOF = $FF
*** ORIGINAL RAGS BY SCOTT JOPLIN ***
; ARRANGED BY FRANK COHEN
MUS1V1 DC MC4,1,MC4,2,MC4,1,MC4,2,MC4,2
DC MC4,2,MA2,2,MD2,4
DC MC3,1,MC3,2,MC3,1,MC3,2,MC3,2
DC MC3,2,0,2,0,1,MD3,1,MG3,1,MB3,1
DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
DC ME3,1,ME3,2,MG3,1,MA3,1,MG3,1,MA3,2
DC MB3,4,0,1,MD3,1,MG3,1,MB3,1
DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
DC MB3,2,MA3,2,MA3,2,MAF3,1,MA3,1
DC MB3,1,MA3,2,MGF3,1,ME3,2,MD3,2
DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
DC ME3,1,ME3,2,MG3,1,MA3,1,MG3,1,MA3,2
DC MB3,4,0,2,MB3,2
DC ME3,1,MD3,2,MB2,1,MC3,2,MB2,2
DC MB2,1,MA2,2,ME2,1,MB2,2,MC2,2
DC MB3,1,MA3,2,MB3,1,MC4,1,MB3,1,MA3,2
DC MG3,2
DC MEOF,MEOF
MUS1V2 DC ME3,1,ME3,2,ME3,1,MEF3,2,MEF3,2
DC MD3,2,0,2,MD2,4
DC ME2,1,ME2,2,ME2,1,MEF2,2,MEF2,2
DC MD2,2,0,2,0,1,0,2,0,1
DC 0,4,0,4
DC 0,4,0,4
DC 0,1,0,2,ME3,1,ME3,1,ME3,1,MEF3,2
DC MD3,4,0,1,0,1,0,2
DC 0,2,MD2,2,0,2,MD2,2
DC 0,2,MD2,2,0,2,MD2,2
DC MDF2,2,MDF2,2,MDF2,2,MC2,1,MC2,1
DC MC2,1,MC2,2,MC2,1,MC2,2,MC2,2
DC 0,2,MD2,2,0,2,MD2,2
DC 0,2,MD2,2,0,2,MD2,2
DC 0,1,0,2,ME2,1,ME2,1,ME2,1,ME2,2
DC MEF2,4,0,2,MB2,2
DC 0,2,MB1,2,0,2,MAF2,2
DC 0,2,MC2,2,0,2,MC2,2
DC MB2,1,MA2,2,MB2,1,MC3,1,MB2,1,MA2,2
DC MG2,2
DC MEOF,MEOF
MUS1V3 DC MA2,1,MA2,2,MA2,1,MA2,2,MA2,2
DC MC3,2,0,2,0,4
DC MC2,1,MC2,2,MC2,1,MC2,2,MC2,2
DC MC2,2,0,2,0,4
DC 0,2,MD2,2,0,2,MD2,2
DC 0,2,MD2,2,0,2,MD2,2
DC 0,2,ME2,2,0,2,MEF2,2
DC 0,2,MD2,2,MD1,2,0,2
DC 0,4,0,4
DC 0,4,0,4
DC 0,2,MA1,2,0,2,MA1,2
DC 0,4,0,4
DC 0,4,0,4
DC 0,4,0,4
DC 0,2,MC2,2,0,2,MC2,2
DC 0,2,MA1,2,MA1,4
DC 0,2,MB1,2,0,2,MAF1,2
DC 0,2,MC2,2,0,2,MC2,2
DC 0,2,MB1,2,0,2,0,2
DC MG2,2
DC MEOF,MEOF
MUS1V4 DC MA2,1,MA2,2,MA2,1,MG2,2,MG2,2
DC MGF2,2,MA1,2,MD1,4
DC MA1,1,MA1,2,MA1,1,MG1,2,MG1,2
DC MGF1,2,MA1,2,MD1,4
DC MG1,2,MB1,2,MD1,2,MB1,2
DC MG1,2,MB1,2,MD1,2,MB1,2
DC MC1,2,MG1,2,MC1,2,MG1,2
DC MG1,2,MG1,2,MD1,2,0,2
DC MG1,2,MB1,2,MD1,2,MB1,2
DC MG1,2,MB1,2,MD1,2,MB1,2
DC ME1,2,MG1,2,MA1,2,MG1,2
DC MD1,1,MGF1,2,MA1,1,MG1,2,MGF1,2
DC MG1,2,MB1,2,MD1,2,MB1,2
DC MG1,2,MB1,2,MD1,2,MB1,2
DC MC1,2,MG1,2,MC1,2,MG1,2
DC MB1,2,MGF1,2,MGF1,4
DC MAF1,2,ME1,2,ME1,2,ME1,2
DC MA1,2,MA1,2,MA1,2,MA1,2
DC MD1,2,MG1,2,MD1,2,ME1,1,MGF1,1
DC MG1,2
DC MEOF,MEOF
*** INTERMISSION MUSIC ***
MUS2V1 DC MBF3,1,MB3,2,MBF3,1,MB3,2,MBF3,1,MB3,1
DC MGF3,1,MG3,2,ME3,1,ME3,4
DC MGF3,1,MG3,2,MGF3,1,MG3,2,MGF3,1,MG3,1
DC MDF3,1,MD3,2,MB2,1,MB2,4
DC MA2,1,MA2,2,MA2,1,ME3,2,ME3,2
DC MD3,1,MG3,2,ME3,1,MD3,1,MB2,1,MG2,2
DC MA2,1,MB2,1,MC3,1,MB2,2,MA2,2,MB2,1
DC MG2,2,0,2,MG3,4
DC MEOF,MEOF
MUS2V2 DC MGF3,1,MG3,2,MGF3,1,MG3,2,MGF3,1,MG3,1
DC MDF3,1,ME3,2,MC3,1,MC3,4
DC MDF3,1,ME3,2,MDF3,1,ME3,2,MDF3,1,ME3,1
DC MBF2,1,MB2,2,MG2,1,MG2,4
DC MG2,1,MG2,2,MG2,1,MA2,2,MA2,2
DC MB2,1,0,1,0,2,0,4
DC MC2,1,MD2,1,ME2,1,MD2,2,MC2,2,MD2,1
DC MB1,2,0,2,MB2,4
DC MEOF,MEOF
MUS2V3 DC 0,2,MD2,2,0,2,MD2,2
DC 0,2,ME2,2,0,2,ME2,2
DC 0,2,MC2,2,0,2,MC2,2
DC 0,2,MD2,2,0,2,MD2,2
DC ME2,1,ME2,2,ME2,1,MAF2,2,MAF2,2
DC MG2,1,0,1,0,2,0,4
DC MA1,4,0,4
DC MG1,2,0,2,MG2,4
DC MEOF,MEOF
MUS2V4 DC MG1,2,MB1,2,MD1,2,MB1,2
DC MC1,2,MG1,2,MC1,2,MG1,2
DC MC1,2,MG1,2,MC1,2,MG1,2
DC MG1,2,MB1,2,MD1,2,MB1,2
DC MC1,4,MDF1,4
DC MD1,2,MG1,2,MG1,4
DC MA1,4,MD1,4
DC MG1,2,0,2,MG1,4
DC MEOF,MEOF
*** DEATH MUSIC BY SCOTT JOPLIN
*** ARRANGED BY FRANK COHEN
MUS3V1 DC MC4,1,MA3,1,MGF3,1,MEF3,1,MC3,1,MA2,2,MAF2,1
DC MG2,2,MA2,1,MC3,2,MD3,1,ME3,2
DC MA2,4,ME3,4
DC MC3,4,0,4
DC MEOF,MEOF
MUS3V2 DC MGF1,1,MA1,1,MC1,1,MEF1,1,MF1,1,MA1,2,MAF1,1
DC 0,2,ME2,2,0,2,ME2,2
DC 0,2,MC2,2,0,2,MB1,2
DC MG1,4,0,4
DC MEOF,MEOF
MUS3V3 DC 0,4,0,4
DC 0,2,MC2,2,0,2,MC2,2
DC 0,2,MA1,2,0,2,MG1,2
DC MG1,4,0,4
MUS3V4 DC 0,4,0,4
DC MG1,2,MG1,2,MA1,2,MA1,2
DC MD1,2,MGF1,2,MG1,2,MF1,2
DC ME1,4,0,4
*** BOTTOM LINE FINISHED MUSIC
*** ARRANGED BY FRANK COHEN 5/9/82
MUS4V1 DC MB1,1,MD2,1,MF2,1,MAF2,1,MB2,1,MB2,2,MB2,2
DC MD3,1,MF3,1,MAF3,1,MB3,2,0,2
DC MC4,1,MAF3,1,MEF3,1,MC3,2,MAF2,1,MC2,1,MEF2,1
DC MBF2,1,MBF2,2,MAF2,3
DC MEOF,MEOF
MUS4V2 DC MD1,1,MF1,1,MAF1,1,MB1,1,MD2,1,MD2,2,MD2,1
DC MD2,1,MF2,1,MAF2,1,MB2,1,MD3,2,0,2
DC MEF3,2,0,2,0,4
DC MG2,1,MG2,2,MEF2,3
MUS4V3 DC 0,4,0,4
DC 0,4,0,4
DC 0,4,0,4
DC 0,4,0,4
MUS4V4 DC 0,4,0,4
DC 0,4,0,4
DC MAF2,2,0,2,0,4
DC MEF1,2,MEF1,2,MAF1,2
*** MIDDLE LINE FINISHED MUSIC
MUS5V1 DC MBF2,1,MC3,1,MBF2,1,MG2,1,MBF2,1,MC3,1,MBF2,1,MG2,1
DC MBF2,1,MD3,2,MBF2,1,MD3,4
DC MG2,1,MD3,3,MA2,1,MC3,2
DC MBF2,2,MF3,1,MG3,1,MA3,1,MBF3,2
DC MEOF,MEOF
MUS5V2 DC MEF1,2,MF1,2,MG1,2,MA1,2
DC MBF1,2,MD2,2,MF1,2,MB1,2
DC MC1,2,MBF1,2,MF1,2,MEF2,2
DC MD2,2,MEF2,2,MD2,2
DC 0,4,0,4
MUS5V3 DC 0,4,0,4
DC 0,2,MF1,2,0,2,MF1,2
DC 0,4,0,4
DC 0,2,MC2,2,0,2
DC 0,4,0,4
MUS5V4 DC MEF2,1,MF2,1,MG2,1,MA2,1
DC 0,2,MBF1,2,0,2,MF1,2
DC 0,2,MG1,2,0,2,MA1,2
DC MBF1,2,MF1,2,MBF1,2
DC 0,4,0,4
*** BONUS MAN MUSIC ***
MUS6V1 DC MA3,1,MG3,2,MG3,2,MA3,1,MG3,2
DC MC4,2,0,2,MC1,2
DC MEOF,MEOF
MUS6V2 DC MF3,1,MF3,2,MF3,2,0,1,0,2
DC ME3,2,0,2,ME2,2
MUS6V3 DC MB2,1,MB2,2,MB2,2,0,1,0,2
DC MC2,2,0,2,MG1,2
MUS6V4 DC MG1,2,MF1,2,MB1,2,MG1,2
DC MC1,2,0,2,MC3,2
*------------SOUND EFFECTS--------------*
SOUNDS TST ATTRACT_MODE
BNE SOUND_END
TST SOUND_COUNT
BEQ SOUND_END
SUB #1,SOUND_COUNT
TST SOUND_COUNT
BNE SOUND_END
MOVE #255,D0
MOVE #7,D1
JSR DOSOUND
SOUND_END RTS
HIT_WALL TST SOUND_COUNT
BNE SOUND_END
TST ATTRACT_MODE
BNE SOUND_END
TST MUSTAT
BNE SOUND_END
MOVE #5,SOUND_COUNT
MOVE #160,D0
MOVE #0,D1
JSR DOSOUND
MOVE #11,D0
MOVE #1,D1
JSR DOSOUND
MOVE #210,D0
MOVE #6,D1
JSR DOSOUND
MOVE #$F6,D0 ;Turn on all tone voices
MOVE #7,D1
JSR DOSOUND
MOVE #10,D0 ;Set volumes
MOVE #8,D1
JMP DOSOUND
POP_SOUND TST SOUND_COUNT
BNE SOUND_END
TST ATTRACT_MODE
BNE SOUND_END
TST MUSTAT
BNE SOUND_END
MOVEM.L D0-D7/A0-A4,-(A7)
MOVE #2,SOUND_COUNT
MOVE #100,D0
MOVE #0,D1
JSR DOSOUND
MOVE #9,D0
MOVE #1,D1
JSR DOSOUND
MOVE #180,D0
MOVE #6,D1
JSR DOSOUND
MOVE #$F6,D0 ;Turn on all tone voices
MOVE #7,D1
JSR DOSOUND
MOVE #10,D0 ;Set volumes
MOVE #8,D1
JSR DOSOUND
MOVEM.L (A7)+,D0-D7/A0-A4
RTS
*-----------------Variables and Storage----------------*
BSS
EVEN
HOLDA0 DS.L 1
VCOUNT DS 1
COUNT DS 1
COUNT2 DS 1
POP_COUNT1 DS 1
POP_COUNT2 DS 1
POP_COUNT3 DS 1
POINTS DS.L 1
BONUS DS.L 1
XPOS DS 48
DELAY DS 48
SWITCH DS 48
OLDCLOWNX DS 1
OLDCLOWNY DS 1
CLOWNX DS 1
CLOWNY DS 1
CLOWNIMAGE DS 1
OLDIMAGE DS 1
IMAGETIME DS 1
LIVES DS 1
MENXPOS DS 1
OLDMEN DS 1
XYZZY DS 8
COLORS DS 16
OLD_COLORS DS 16
OLD_REZ DS 1
COUNTER DS 1
TIMER DS 1
COUNT1 DS 1
SCREEN DS.L 1
SCREEN2 DS.L 1
FHANDLE DS 1
HOLDEN DS.L 1
PCOUNT DS 1
PCOUNT2 DS 1
EVEN
KAY DS 1
YINC DS 1
XINC DS 1
VPOS DS 1
HPOS DS 1
SYINC DS 1
KS DS 1
HITS DS 1
RNDVAL DS 1
TOP_FLAG DS 1
MUSDLY DS 1
MUSTAT DS 1
VOICE1 DS 1
VOICE2 DS 1
VOICE3 DS 1
MSDLY1 DS 1
MSDLY2 DS 1
MSDLY3 DS 1
MSPTR1 DS.L 1
MSPTR2 DS.L 1
MSPTR3 DS.L 1
SOUND_COUNT DS 1
LFSIZE DS.L 1
LFADR DS.L 1
ATTRACT_MODE DS 1
MEN_TIMER DS 1
BALLOONS DS.B 32000
FLIP1 DS.B 32000
MEN DS.B 32000
MESSAGES DS.B 32000
TITLE DS.B 32000
DECODE DS.B 32000
END